#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<string.h>
#include<assert.h>


//模拟实现strstr
//找子串
char* my_strstr(const char* str1, const char* str2)
{
	assert(str1);
	assert(str2);
	char* cp = str1;
	char* s1 = cp;
	char* s2 = str2;
	if (*str2 == '\0')//如果找空字符串，则直接返回str1
		return str1;
	while (*cp != '\0')
	{
		//开始匹配
		s1 = cp;
		s2 = str2;
		while (*s1&&*s2&&*s1 == *s2)//s1和s2指向不能是'\0'
		{
			s1++;
			s2++;
		}
		if (*s2 == '\0')
			return cp;
		cp++;
	}
	return NULL;
}
int main()
{
	char arr1[] = "abcdefg";
	char arr2[] = "cde";
	//char* ret = strstr(arr1, arr2);
	char* ret = my_strstr(arr1, arr2);
	if (ret != NULL)//如果找不到，返回空指针
	{
		printf("%s", ret);
	}
	else
		printf("找不到\n");
	return 0;
}
////模拟实现库函数strcmp
////逐个比较
//int my_strcmp(const char* str1, const char* str2)
//{
//	//断言
//	assert(str1 && str2);
//	while (*str1==*str2)
//	{
//		if (*str1 == '\0')//判断到最后一个字符了
//			return 0;
//		str1++;
//		str2++;
//	}
//	if (*str1 > *str2)
//		return 1;
//	else
//		return -1;
//}
//int main()
//{
//	char arr1[] = "abcde";
//	char arr2[] = "abdabcd";
//	int ret=my_strcmp(arr1, arr2);
//	printf("%d", ret);
//	return 0;
//}

////模拟库函数strcat(追加）
////strcat最好不要自己给自己追加
//char* my_strcat(char* dest, const char* src)
//{
//	assert(dest);
//	assert(src);
//	char* ret = dest;
//	while(*dest!='\0')
//	{
//		dest++;
//	}
//	while (*src != '\0')
//	{
//		*dest = *src;
//		dest++;
//		src++;
//	}
//	*dest = *src;//拷贝'\0'
//	return ret;
//}
//int main()
//{
//	char arr1[30] = "hello bit ";
//	char arr2[] = "very good";
//	my_strcat(arr1, arr2);
//	//strcat(arr1, arr2);
//	printf("%s\n", arr1);
//	return 0;
//}